//package com.fbinggun.fbinggunutil.API;
//
//import com.fbinggun.fbinggunutil.utilclass.Variable;
//import org.bukkit.entity.Player;
//import javax.script.ScriptEngine;
//import javax.script.ScriptException;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * 字符串处理 变量计算 常用方法
// */
//public class JavaUtil2 {
//
//
//    /**
//     * 将字符串转为 List<String>
//     * @param str 字符串
//     * @param replace 分隔符
//     * @return
//     */
//    public static List<String> toList(String str,String replace){
//        String[] args = str.split(replace);
//        List<String> list = new ArrayList<>();
//        for(String str2:args){
//            list.add(str2);
//        }
//        return list;
//    }
//
//    /**
//     * 将List<String> 转为字符串
//     * @param list
//     * @param replace 分隔符
//     * @return
//     */
//    //通过replace分隔符 将List转字符串
//    public static String listToString(List<String> list,String replace){
//        String str = "";
//        for(String str2:list){
//            str=str+str2+replace;
//        }
//        return str;
//    }
//
//    //判断变量条件
//
//    /**
//     * 判断公式 布尔值
//     * 例如：
//     *     %Player_name%==Binggun
//     *     %player_level<=1%||%Player_name%==Binggun
//     *     %player_level<=1%&&%Player_name%==Binggun
//     * @param player 玩家
//     * @param formulas 公式
//     * @return
//     * @throws Exception
//     */
//    public static boolean isRunnerAll(Player player, String formulas) throws Exception {
//        if (formulas.contains("&&")) {
//            String[] formulass = formulas.split("&&");
//            for (String formula : formulass) {
//                if (!isRunner(player, formula)) {
//                    return false;
//                }
//
//            }
//            return true;
//        }else
//        if (formulas.contains("||")) {
//            String[] formulass = formulas.split("\\|\\|");
//            for (String formula : formulass) {
//                if (isRunner(player, formula)) {
//                    return true;
//                }
//
//            }
//            return false;
//        }else {
//            return isRunner(player,formulas);
//        }
//    }
//
//    /**
//     * 判断公式 布尔值
//     * 例如：
//     *     %Player_name%==Binggun
//     *     %player_level%<=1
//     *     %player_level%<=1
//     * @param player 玩家
//     * @param formula 公式
//     * @return
//     * @throws Exception
//     */
//    public static boolean isRunner(Player player, String formula) {
//        if(PluginUtil.isPlaceholderAPI()) {
//            formula = PApiUtil.setPlaceholders(player, formula);
//        }
//        if(formula.contains("==")){
//            String[] papi = formula.split("==");
//            if(papi[0].equalsIgnoreCase(papi[1])){
//                return true;
//            }else {
//                return false;
//            }
//        }else if(formula.contains("!=")){
//            String[] papi = formula.split("!=");
//            if(papi[0].equalsIgnoreCase(papi[1])){
//                return false;
//            }else {
//                return true;
//            }
//        }else {
//            // ScriptEngineManager manager = new ScriptEngineManager();
//            NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
//            ScriptEngine engine =   factory.getScriptEngine();
//            try {
//                // 将表达式计算成布尔值
//                Object result = engine.eval(formula);
//                if (result instanceof Boolean) {
//                    return (boolean) result;
//                }
//            } catch (ScriptException e) {
//                e.printStackTrace();
//            }
//        }
//        return false;
//    }
//
//
//    /**
//     * 计算公式
//     * 例如：
//     *     %player_level%*100
//     * @param player 玩家
//     * @param formula 公式
//     * @return
//     */
//    //计算 变量公式
//    public static double calculate(Player player,String formula){
//        if(PluginUtil.isPlaceholderAPI()) {
//            formula = PApiUtil.setPlaceholders(player, formula);
//        }
////        ScriptEngineManager manager = new ScriptEngineManager();
////        ScriptEngine engine = manager.getEngineByName("nashorn");
//        NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
//        ScriptEngine engine =   factory.getScriptEngine();
//        try {
//            Object result = engine.eval(formula);
//            return  Double.valueOf(String.valueOf(result));
//        } catch (Exception e) {
//            System.out.println("计算表达式时出错: "+formula);
//        }
//        return 0;
//    }
//
//    /**
//     * 替换彩色字符 与本地变量
//     * @param str 字符串
//     * @param variable 变量 可为空
//     * @return
//     */
//    //替换彩色字符与变量
//    public static String replaceColor(String str, Variable... variable){
//        str=str.replaceAll("&","§");
//        if(variable!=null){
//            for(Variable v:variable ){
//                str=str.replaceAll(v.getKey(), v.getValue());
//            }
//        }
//        return str;
//    }
//
//    /**
//     * 替换彩色字符
//     * @param str
//     * @return
//     */
//    //替换彩色字符
//    public static String replaceColor(String str){
//        return replaceColor(str,null);
//    }
//    /**
//     * 替换彩色字符
//     * @param list
//     * @return
//     */
//    //替换彩色字符
//    public static List<String> replaceColor(List<String> list){
//        return replaceColor(list,null);
//    }
//    /**
//     * 替换彩色字符
//     * @param list
//     * @param variable 变量
//     * @return
//     */
//    //替换彩色字符与变量
//    public static List<String> replaceColor(List<String> list,Variable... variable){
//        List<String> ls = new ArrayList<>();
//        for(String str:list) {
//            str = str.replaceAll("&", "§");
//            if(variable!=null){
//                for(Variable v:variable ){
//                    str=str.replaceAll(v.getKey(), v.getValue());
//                }
//            }
//            ls.add(str);
//        }
//        return ls;
//    }
//}
